/**
 * @author 宋相恒
 * @date 2012年9月12日
 * @class ArticleForm
 * @extends Ext.form.FormPanel
 * @description 编辑文章form，修改文章和添加文章用的表单界面都是该表单
 */
ArticleForm = Ext.extend(Ext.form.FormPanel,{
	comboCate : null,
	comboStoreCate : null,	//文章类别下拉框数据源
	//构造方法
	constructor : function(){
		this.comboStoreCate = new Ext.data.JsonStore({
			url : "category_showCate",
			fields : ["id", "name"],
			autoLoad : true
		});
		//调用父类的构造方法
		ArticleForm.superclass.constructor.call(this, {
			layout : "form",	//form布局
			labelWidth : 55,
			baseCls : "x-plain",	//统一背景色
			bodyStyle : "padding:8px;",
			defaults : {
				anchor : "95%"	// 锚点布局
			},
			items : [{
				xtype : "textfield",
				fieldLabel : "文章标题",
				allowBlank : false,
				name : "article.title"
			}, {
				xtype : "combo",
				store : this.comboStoreCate,
				valueField : "id",
				hiddenName : "cateId",
				displayField : "name",
				triggerAction : "all",
				mode : "remote",
				emptyText : "请选择文章分类",
				fieldLabel : "文章分类",
				allowBlank : false
			}, {
				xtype : "htmleditor",
				fieldLabel : "文章内容",
				allowBlank : false,
				name : "article.content"
			}]
		})
	},
	mySubmit : function(_url){
		this.getForm().submit({
			url : _url,
			waitTitle : "数据传输",
			waitMsg : "数据传输中，请稍候...",
			success : this.onSuccess,	//成功回调方法
			failure : this.onFailure,	//失败回调方法
			scope : this	//作用域
		});
	},
	/**
	 * 请求成功的回调方法
	 * @param {Object} _form
	 * @param {Object} _action
	 * @memberOf {TypeName} 
	 */
	onSuccess : function(_form, _action){
		if(_action.result.success == true){
			// 调用当前组建的父容器的onCloseWinClick()事件
			this.ownerCt.onCloseWinClick();
			//_articlegp是在jspfactory/article/articleGridPanel.jsp中创建的实例
			_articlegp.getStore().reload();
		}
	},
	/**
	 * 请求失败的回调方法
	 * @param {Object} _form
	 * @param {Object} _action
	 */
	onFailuer : function(_form, _action){
		Ext.Msg.alert("系统消息", _action.result.errorMsg);
	},
	/**
	 * 获取form的值
	 * @memberOf {TypeName} 
	 * @return {TypeName} 
	 */
	getFormValues : function(){
		return new Ext.data.Record(this.getForm().getValues());
	},
	/**
	 * 给表单设置值
	 * @param {Object} _record
	 * @memberOf {TypeName} 
	 */
	setFormValues : function(_record){
		this.getForm().loadRecord(_record);
	},
	/**
	 * 重置表单
	 * @memberOf {TypeName} 
	 */
	reset : function(){
		this.getForm().reset();
	}
});